switch (frontend_state) {
case XenbusStateInitialising:
- case XenbusStateConnected:
+ case XenbusStateInitialised:
break;
- case XenbusStateInitialised:
+ case XenbusStateConnected:
err = connect_ring(be);
if (err) {
return;
goto abort_transaction;
}
- err = xenbus_printf(xbt, dev->nodename,
- "state", "%d", XenbusStateInitialised);
- if (err) {
- goto abort_transaction;
- }
-
err = xenbus_transaction_end(xbt, 0);
if (err == -EAGAIN)
goto again;
xenbus_dev_fatal(dev, err, "completing transaction");
goto destroy_tpmring;
}
+
+ xenbus_switch_state(dev, XenbusStateConnected);
+
return 0;
abort_transaction:
if (tp->is_suspended == 0) {
device_unregister(&dev->dev);
}
+ xenbus_switch_state(dev, XenbusStateClosed);
break;
}
}
/* lock, so no app can send */
mutex_lock(&suspend_lock);
+ xenbus_switch_state(dev, XenbusStateClosed);
tp->is_suspended = 1;
for (ctr = 0; atomic_read(&tp->tx_busy) && ctr <= 25; ctr++) {